import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';

import {AppRoutingModule} from './app-routing.module';
import {AppComponent} from './app.component';
import {PengesoftNgLibModule, PrototypeEx} from 'pengesoft-ng-lib';
import {NzMessageModule} from 'ng-zorro-antd/message';
import {NzModalModule} from 'ng-zorro-antd/modal';
import {NzIconModule} from 'ng-zorro-antd/icon';
import {registerLocaleData} from '@angular/common';

import {NzLayoutModule} from 'ng-zorro-antd/layout';
import {ShareModule} from './share/share.module';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {NzInputModule} from 'ng-zorro-antd/input';
import {NzPaginationModule} from 'ng-zorro-antd/pagination';
import { HrmsComponent } from './views/hrms/hrms.component';
import { OrganizeManageComponent } from './views/organize-manage/organize-manage.component';
import { AuthorityManagementComponent } from './views/authority-management/authority-management.component';
import { NzMenuModule } from 'ng-zorro-antd/menu';
import { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';
import { NzTableModule } from 'ng-zorro-antd/table';
import { NzBadgeModule } from 'ng-zorro-antd/badge';
import zh from '@angular/common/locales/zh';
import { NZ_ICONS } from 'ng-zorro-antd/icon';
import { NZ_I18N, en_US } from 'ng-zorro-antd/i18n';
import { IconDefinition } from '@ant-design/icons-angular';
import * as AllIcons from '@ant-design/icons-angular/icons';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientJsonpModule, HttpClientModule } from '@angular/common/http';
import { NzDividerModule } from 'ng-zorro-antd/divider';
import { NzRadioModule } from 'ng-zorro-antd/radio';
import { NzTabsModule } from 'ng-zorro-antd/tabs';
import { UserManagementComponent } from './views/user-management/user-management.component';
import { RolerManagementComponent } from './views/roler-management/roler-management.component';

import { AddOrganizeComponent } from './components/add-organize/add-organize.component';
import { StaffManagementComponent } from './views/staff-management/staff-management.component';
import { RosterComponent } from './views/staffsComponents/roster/roster.component';
import { RosterTableComponent } from './components/staffsComponents/roster-table/roster-table.component';
import { SearchComponent } from './components/staffsComponents/search/search.component';
import { FilesComponent } from './views/staffsComponents/files/files.component';
import { FilestableComponent } from './components/staffsComponents/filestable/filestable.component';
import { ChangeHistoryComponent } from './components/change-history/change-history.component';
import { EnterFilesComponent } from './views/staffsComponents/enter-files/enter-files.component';
import {HrmsRoutingModule} from './views/hrms/hrms-routing.module';
import { DetailFilesComponent } from './views/staffsComponents/detail-files/detail-files.component';
import { PersonnelchangesComponent } from './views/staffsComponents/personnelchanges/personnelchanges.component';
import { EntryTableComponent } from './components/staffsComponents/entry-table/entry-table.component';
import { RosterUpdateComponent } from './views/staffsComponents/roster/components/roster-update-modal/roster-update.component';
import { NgxEchartsModule } from 'ngx-echarts';


// 引入服务
import { DeptServiceSvr } from './services/dept.service';
import { JobServiceSvr } from './services/job.service';
import { EntryModalComponent } from './views/staffsComponents/personnelchanges/components/entry-modal/entry-modal.component';
import { StatisticsComponent } from './views/staffsComponents/statistics/statistics.component';
import { MostEchartsComponent } from './components/staffsComponents/eCharts/most-echarts/most-echarts.component';
import { SituationComponent } from './views/staffsComponents/statistics/components/situation/situation.component';
import { AddJobComponent } from './components/add-job/add-job.component';

import { EmployeeServiceSvr } from './services/employee.service';
import { TrainingManagementComponent } from './views/training-management/training-management.component';
import { CandidateComponent} from './views/recruitComponents/candidate/candidate.component';
import { HomePageComponent} from './views/recruitComponents/home-page/home-page.component';
import { InterviewManagementComponent} from './views/recruitComponents/interview-management/interview-management.component';
import { ReApplicationAddComponent} from './views/recruitComponents/re-application-add/re-application-add.component';
import { RecruitmentApplicationComponent} from './views/recruitComponents/recruitment-application/recruitment-application.component';
import { RecruitmentManagementComponent} from './views/recruitComponents/recruitment-management/recruitment-management.component';
import { RecruitmentReviewComponent} from './views/recruitComponents/recruitment-review/recruitment-review.component';
import { RecruitmentInfoComponent} from './views/recruitComponents/recruitment-info/recruitment-info.component';
import { StatisticalAnalysisComponent} from './views/recruitComponents/statistical-analysis/statistical-analysis.component';
import { TalentPoolComponent} from './views/recruitComponents/talent-pool/talent-pool.component';
import { AddCandidateComponent} from './components/add-candidate/add-candidate.component';
import { SalaryManageComponent } from './views/staffsComponents/salary-manage/salary-manage.component';
import { RewardOrPunishComponent } from './views/staffsComponents/reward-or-punish/reward-or-punish.component';
import { TrainManagerComponent } from './views/staffsComponents/train-manager/train-manager.component';
import { SalaryMgeSvr } from './services/salary-mge.service';




PrototypeEx.apply();

const antDesignIcons = AllIcons as {
  [key: string]: IconDefinition;
};
const icons: IconDefinition[] = Object.keys(antDesignIcons).map(key => antDesignIcons[key]);

registerLocaleData(zh);

@NgModule({
  declarations: [
    AppComponent,
    HrmsComponent,
    OrganizeManageComponent,
    AuthorityManagementComponent,
    UserManagementComponent,
    RolerManagementComponent,
    AddOrganizeComponent,
    StaffManagementComponent,
    RosterComponent,
    RosterTableComponent,
    SearchComponent,
    FilesComponent,
    FilestableComponent,
    ChangeHistoryComponent,
    EnterFilesComponent,
    DetailFilesComponent,
    PersonnelchangesComponent,
    EntryTableComponent,
    RosterUpdateComponent,
    EntryModalComponent,
    StatisticsComponent,
    MostEchartsComponent,
    SituationComponent,
    AddJobComponent,
    TrainingManagementComponent,
    CandidateComponent,
    HomePageComponent,
    InterviewManagementComponent,
    ReApplicationAddComponent,
    RecruitmentApplicationComponent,
    RecruitmentManagementComponent,
    RecruitmentReviewComponent,
    RecruitmentInfoComponent,
    StatisticalAnalysisComponent,
    TalentPoolComponent,
    AddCandidateComponent,
    TrainManagerComponent,
    SalaryManageComponent,
    RewardOrPunishComponent,
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    PengesoftNgLibModule.forRoot(),
    NzMessageModule,
    NzModalModule,
    NzIconModule,
    NzLayoutModule,
    ShareModule,
    ReactiveFormsModule,
    NzInputModule,
    NzPaginationModule,
    FormsModule,
    NzMenuModule,
    NzAutocompleteModule,
    NzTableModule,
    NzBadgeModule,
    BrowserModule, FormsModule,
    HttpClientModule,
    HttpClientJsonpModule,
    ReactiveFormsModule,
    BrowserAnimationsModule,
    NzDividerModule,
    NzRadioModule,
    HrmsRoutingModule,
    NgxEchartsModule
  ],
  providers: [DeptServiceSvr, JobServiceSvr, EmployeeServiceSvr, SalaryMgeSvr],
  bootstrap: [AppComponent]
})
export class AppModule {
}
